package kr.pe.johnkim.pushchat.mobile.service;

import kr.pe.johnkim.pushchat.mobile.dao.PushChatBlockDao;
import kr.pe.johnkim.pushchat.mobile.domain.PushChatBlock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author : John_Kim <cale9797@gmail.com>
 * @date : 2013. 12. 16.
 */
@Service
public class PushChatBlockServiceImpl implements PushChatBlockService {

    // SLF4J Logging
    private Logger logger = LoggerFactory.getLogger(PushChatBlockServiceImpl.class);

    @Autowired
    private PushChatBlockDao pushChatBlockDao;

    /**
     * 차단 중복을 확인 한다.
     *
     * @param pushChatBlock
     * @return
     */
    @Override
    public PushChatBlock selectDuplicationBlock(PushChatBlock pushChatBlock) {
        logger.info("selectDuplicationBlock");
        return this.pushChatBlockDao.selectDuplicationBlock(pushChatBlock);
    }

    /**
     * 차단을 등록 한다.
     *
     * @param pushChatBlock
     */
    @Override
    public void registerBlock(PushChatBlock pushChatBlock) {
        logger.info("registerBlock");
        this.pushChatBlockDao.registerBlock(pushChatBlock);
    }

    /**
     * 차단 목록을 가져 온다.
     * <p/>
     * 1. 차단 당한 사용자 아이디를 입력하면 해당 사용자의 차단 목록을 가져 온다.
     * 2. 없으면 모든 목록을 가져 온다.
     * 3. 신고자 아이디를 입력하면 해당 신고자가 신고한 차단 목록을 가져 온다.
     * 4. 없으면 모든 목록을 가져 온다.
     *
     * @param pushChatBlock
     * @return
     */
    @Override
    public List<PushChatBlock> selectBlockList(PushChatBlock pushChatBlock) {
        logger.info("selectBlockList");
        return this.pushChatBlockDao.selectBlockList(pushChatBlock);
    }

    /**
     * 특정(차단당한) 사용자의 차단 총 갯수를 가져 온다.
     *
     * @param pushChatBlock
     * @return
     */
    @Override
    public PushChatBlock selectBlockTotalCount(PushChatBlock pushChatBlock) {
        logger.info("selectBlockTotalCount");
        return this.pushChatBlockDao.selectBlockTotalCount(pushChatBlock);
    }
}
